package cn.tedu.charging.order.controller;

import cn.tedu.charging.common.param.OrderAddParam;
import cn.tedu.charging.common.protocol.JsonResult;
import cn.tedu.charging.order.service.OrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
@Api(tags = "订单模块")
public class OrderController {
    @Autowired
    private OrderService orderService;
    //创建订单 接口
    //在项目中最好保持输出日志的习惯
    //本来日志绝大部分的级别 debug 我们代码中为了方便 使用info
    //日志输出位置 方法进入 方法的结束 方法流程分支
    @ApiOperation(value="创建订单")
    @PostMapping("/order/create")
    public JsonResult<String> createOrder(@RequestBody OrderAddParam param){
        log.info("创建订单 入参:{}",param);
        //扫码之后 创建订单 并不是真的生成订单数据 存储到数据库
        //而是通过一个唯一的订单编号 经过业务流程 设备和后端服务交互 只有设备明确开始充电 检测失败 才会存储
        //success或者fail订单信息 在这个扫码的接口中不创建任何数据库数据
        String orderNo=orderService.createOrder(param);
        //组织返回值
        JsonResult result = JsonResult.ok(orderNo, "开始创建订单充电");
        log.info("创建订单 返回值:{}",result);
        return result;
    }

}
